package br.com.translog.modelo;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.xml.bind.annotation.XmlRootElement;

@Entity
@Table(name = "\"SaidaEntrega\"", catalog = "\"Translog\"", schema = "\"EsqTranslog\"")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "SaidaEntrega.findAll", query = "SELECT s FROM SaidaEntrega s"),
    @NamedQuery(name = "SaidaEntrega.findByCodigoRastreioEntrega", query = "SELECT s FROM SaidaEntrega s WHERE s.codigoRastreioEntrega = :codigoRastreioEntrega"),
    @NamedQuery(name = "SaidaEntrega.findByDataSaidaEntrega", query = "SELECT s FROM SaidaEntrega s WHERE s.dataSaidaEntrega = :dataSaidaEntrega"),
    @NamedQuery(name = "SaidaEntrega.findByHoraSaidaEntrega", query = "SELECT s FROM SaidaEntrega s WHERE s.horaSaidaEntrega = :horaSaidaEntrega"),
    @NamedQuery(name = "SaidaEntrega.findByEntregador", query = "SELECT s FROM SaidaEntrega s WHERE s.entregador = :entregador")})
public class SaidaEntrega implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "\"CodigoRastreioEntrega\"")
    private Integer codigoRastreioEntrega;
    @Basic(optional = false)
    @Column(name = "\"DataSaidaEntrega\"")
    @Temporal(TemporalType.DATE)
    private Date dataSaidaEntrega;
    @Basic(optional = false)
    @Column(name = "\"HoraSaidaEntrega\"")
    @Temporal(TemporalType.TIME)
    private Date horaSaidaEntrega;
    @Basic(optional = false)
    @Column(name = "\"Entregador\"")
    private String entregador;
    @JoinColumn(name = "\"Matricula_Funcionario\"", referencedColumnName = "\"Matricula\"")
    @ManyToOne
    private Funcionario matriculaFuncionario;
    @JoinColumn(name = "\"Codigo_EntradaEntrega\"", referencedColumnName = "\"Codigo\"")
    @OneToOne
    private EntradaEntrega codigoEntradaEntrega;

    public SaidaEntrega() {
    }

    public SaidaEntrega(Integer codigoRastreioEntrega) {
        this.codigoRastreioEntrega = codigoRastreioEntrega;
    }

    public SaidaEntrega(Integer codigoRastreioEntrega, Date dataSaidaEntrega, Date horaSaidaEntrega, String entregador) {
        this.codigoRastreioEntrega = codigoRastreioEntrega;
        this.dataSaidaEntrega = dataSaidaEntrega;
        this.horaSaidaEntrega = horaSaidaEntrega;
        this.entregador = entregador;
    }

    public Integer getCodigoRastreioEntrega() {
        return codigoRastreioEntrega;
    }

    public void setCodigoRastreioEntrega(Integer codigoRastreioEntrega) {
        this.codigoRastreioEntrega = codigoRastreioEntrega;
    }

    public Date getDataSaidaEntrega() {
        return dataSaidaEntrega;
    }

    public void setDataSaidaEntrega(Date dataSaidaEntrega) {
        this.dataSaidaEntrega = dataSaidaEntrega;
    }

    public Date getHoraSaidaEntrega() {
        return horaSaidaEntrega;
    }

    public void setHoraSaidaEntrega(Date horaSaidaEntrega) {
        this.horaSaidaEntrega = horaSaidaEntrega;
    }

    public String getEntregador() {
        return entregador;
    }

    public void setEntregador(String entregador) {
        this.entregador = entregador;
    }

    public Funcionario getMatriculaFuncionario() {
        return matriculaFuncionario;
    }

    public void setMatriculaFuncionario(Funcionario matriculaFuncionario) {
        this.matriculaFuncionario = matriculaFuncionario;
    }

    public EntradaEntrega getCodigoEntradaEntrega() {
        return codigoEntradaEntrega;
    }

    public void setCodigoEntradaEntrega(EntradaEntrega codigoEntradaEntrega) {
        this.codigoEntradaEntrega = codigoEntradaEntrega;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (codigoRastreioEntrega != null ? codigoRastreioEntrega.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof SaidaEntrega)) {
            return false;
        }
        SaidaEntrega other = (SaidaEntrega) object;
        if ((this.codigoRastreioEntrega == null && other.codigoRastreioEntrega != null) || (this.codigoRastreioEntrega != null && !this.codigoRastreioEntrega.equals(other.codigoRastreioEntrega))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "br.com.translog.modelo.SaidaEntrega[ codigoRastreioEntrega=" + codigoRastreioEntrega + " ]";
    }
}
